package com.haiya.visitor.case1;

/**
 * @author qiaoguoqiang
 * 利用 访问者（Visitor）模式 模拟艺术公司与造币公司的功能。
 * 原材料:
 *  - 铜
 *  - 纸
 *
 * 艺术公司:
 *  - 铜: 设计出铜像
 *  - 纸: 画出图画
 *
 * 造币公司:
 *  - 铜: 印出铜币
 *  - 纸: 印出纸币
 */
public class Client {
    public static void main(String[] args) {
        Material pager = new Pager();
        Material cuprum = new Cuprum();

        MaterialSet materialSet = new MaterialSet();
        materialSet.add(pager);
        materialSet.add(cuprum);

        ArtCompany artCompany = new ArtCompany();
        System.out.println("艺术公司用材料制作出: " + materialSet.accept(artCompany));

        System.out.println("------------------------");
        Mint mint = new Mint();
        System.out.println("造币公司用材料制作出: " + materialSet.accept(mint));
    }
}
